/*
 * InlineStream.h
 *
 *  Created on: Jan 5, 2011
 *      Author: blyth
 */

#ifndef INLINESTREAM_H_
#define INLINESTREAM_H_

namespace CLHEP{
class MTwistEngine;
class RandGauss;
}

class InlineStream {
public:
	InlineStream(unsigned int length, unsigned int numPeaks, long seed, double* refPeak, unsigned short refSize);
	virtual ~InlineStream();

	void reRandomize();

	unsigned int const length;
	unsigned int const numPeaks;
	unsigned short* const stream;
	double const * const refPeak;
	unsigned short const refSize;
	double** peakInfo;
	CLHEP::MTwistEngine* randEngine;
	CLHEP::RandGauss* randGauss;

private:
	void addNoise();
	void forceBits();
};

#endif /* INLINESTREAM_H_ */
